package com.emeraldparser.util;

import java.util.Map;
import java.util.Set;

import com.google.common.collect.SetMultimap;
import com.google.common.collect.Table;

public interface SetMultitable<R, C, V> extends Multitable<R, C, V> {

	@Override
	Set<V> get(R rowKey, C columnKey);

	@Override
	Set<V> removeAll(Object rowKey, Object columnKey);

	@Override
	SetMultimap<C, V> row(R rowKey);

	@Override
	SetMultimap<R, V> column(C columnKey);

	Set<V> replaceValues(R rowKey, C columnKey, Iterable<? extends V> values);

	@Override
	Set<Table.Cell<R, C, V>> cells();

	@Override
	Map<R, ? extends SetMultimap<C, V>> rowMap();

	@Override
	Map<C, ? extends SetMultimap<R, V>> columnMap();

	@Override
	Table<R, C, ? extends Set<V>> asTable();

}
